#ifndef PILHA_H
#define PILHA_H

#include "boolean.h"

typedef struct pilha {
   int tamanho_max;
   int tamanho;
   void* *elem; /* vetor de void* */
} * pilha;

pilha pilha_cria_vazia(int tamanho);

int pilha_tamanho_max(pilha *p);

int pilha_tamanho(pilha *p);

void pilha_empilha(pilha *p, void *elem);

void *pilha_desempilha(pilha *p);

void *pilha_topo(pilha *p);

boolean pilha_vazia(pilha *p);

boolean pilha_cheia(pilha *p);

void pilha_libera(pilha *p);

#endif
